package com;
import java.io.*;
import java.net.*;

import datatypes.*;

public class Conexion {
	
	Socket socket = null;
	ObjectOutputStream out = null;
    ObjectInputStream   in = null;
	
	public void crearConexion(){
		
		String serverHostName  = new String("127.0.0.1");
        
        try { 
        	
            socket = new Socket(serverHostName, 8888 );
            System.out.println("Se pudo conectar con el Host: " + serverHostName);
            
        } catch (UnknownHostException e) {
            System.err.println("No se conoce el Host: " + serverHostName);
            System.exit(1);
        } catch (IOException e) {
            System.err.println("No se pudo conectar con el Host: " + serverHostName);
            System.exit(1);
        }
	}
        
     public MensajeDT conversacionSocket( MensajeDT mensaje ) {  
		MensajeDT retorno = null;
		
		try {
			out = new ObjectOutputStream(socket.getOutputStream());
			out.writeObject( mensaje );
			//out.flush();
			// Aca lee lo que recibe del servidor.... 
			in  = new ObjectInputStream(socket.getInputStream());
	        retorno = (MensajeDT)in.readObject();
	        
	        if ( retorno.getTipo() == TipoMensaje.ERROR ){
		        System.out.println( ((ErrorDT)retorno).getMensajeError() );
	        } 
	        
	     }catch (Exception ex){
	            //System.out.println (ex.getMessage());
	        	ex.printStackTrace();
	     } 
		
		return retorno;

	}
	
	
	public void cerrarConexion(){
		
		try {
		out.close();
		in.close();
		socket.close();
		}catch(IOException e){
			System.err.println("No se pudo cerrar la conexion.");
            System.exit(1);		
		}
	}

}
